#ifndef _NE_INDEX_DATA_H_
#define _NE_INDEX_DATA_H_

#include <graphics/VertexAttribute.h>

namespace ne
{
    class NEAPI IndexData
    {
        public:
            IndexData(const PrimitiveType pt,
                      const uint32_t bufferSource,
                      const AttributeType type,
                      const uint32_t count,
                      const size_t offset=0);

            PrimitiveType getPrimitiveType() const;

            VertexAttributePtr getAttribute() const;

            uint32_t getSource() const;

            AttributeType getType() const;

            uint32_t getCount() const;

            uint32_t getSize() const;

            GLDataType getGLDataType() const;

            uint32_t getAttributeSize() const;

            size_t getOffset() const;

            void* getOffsetPointer() const;

            ~IndexData();

        private:
            IndexData();

            IndexData(const IndexData &);

            IndexData& operator = (const IndexData &);

        private:
            PrimitiveType mPrimitiveType;
            VertexAttributePtr mpAttribute;
    };

    typedef SharedPtr<IndexData> IndexDataPtr;
}

#endif
